package org.tissou.client.DonneesAAfficher;

import com.google.gwt.user.client.rpc.IsSerializable;

import java.util.List;
import java.util.ArrayList;

/**
 * Created by IntelliJ IDEA.
 * User: Claire
 * Date: 03/03/2009
 * Time: 21:12:32
 * To change this template use File | Settings | File Templates.
 */
public class Donnees_Base  implements IsSerializable {
  int nombreLigneDonnees;
  int nombreColonne;
  List<String> tetesColonnes = new ArrayList<String>();
  List<LigneDonnee> donnees = new ArrayList<LigneDonnee>();
  TypeDonnee typedonnees;

  public Donnees_Base(List<String> tetesColonnes, List<LigneDonnee> donnees) {
    this.tetesColonnes = tetesColonnes;
    this.donnees = donnees;
    nombreLigneDonnees= donnees.size();
    nombreColonne = tetesColonnes.size();
  }

  public Donnees_Base(List<LigneDonnee> donnees) {
    if (donnees.size() > 0) {
      this.nombreLigneDonnees = donnees.size();
      this.donnees = donnees;
      this.nombreColonne = donnees.get(0).nombreColonne;
      this.typedonnees = donnees.get(0).type;
      this.tetesColonnes = GenererTetesColonnes(this.typedonnees);
    }
    else {
      nombreColonne = 0;
      nombreLigneDonnees = 0;
    }
  }

  public Donnees_Base() {
  }

  private List<String> GenererTetesColonnes(TypeDonnee t) {
    List<String> headings = new ArrayList<String>();
    switch (t) {
      case LIGNECOMPTEREEL:
        headings.add("No Transaction");
        headings.add("Date");
        headings.add("Compte");
        headings.add("Categorie");
        headings.add("Libelle");
        headings.add("Somme");
        headings.add("Verifie");
        break;

      case LIGNECOMPTEVIRTUEL:
        headings.add("No Transaction");
        headings.add("Date");
        headings.add("Monnaie");
        headings.add("Categorie");
        headings.add("Libelle");
        headings.add("Somme");
        headings.add("Verifie");
        headings.add("Tiers");
         break;
      case DETTES:
        headings.add("Proprietaire");
        headings.add("Somme due");
        break;
      case DONNEESIMPORTEES:
        headings.add("Date");
        headings.add("Type");
        headings.add("Compte");
        headings.add("Categorie");
        headings.add("Libelle");
        headings.add("Avec Qui");
        headings.add("%");
        headings.add("Somme");
    }


    return headings;
  }

// La methode ci dessous ne semble pas etre utilisee 
// public Tableau PresenterDansTableau(){
//    return new Tableau(this);
//
//  }

  public int getNombreLigneDonnees() {
    return nombreLigneDonnees;
  }

  public int getNombreColonne() {
    return nombreColonne;
  }

  public List<String> getTetesColonnes() {
    return tetesColonnes;
  }

  public Element getElement(int no_lignedonnee, int no_element){
    return donnees.get(no_lignedonnee).getElement(no_element);
  }

  public void ajouterColonne(Element elementAAjouterAlaFinDeTouteslesLignes, String heading) {
    for (LigneDonnee ligne : donnees) {
      ligne.ajouterElement((Element) elementAAjouterAlaFinDeTouteslesLignes.clone());
    }
    tetesColonnes.add(heading);
    nombreColonne++;
  }
}
